/*
 * Copyright 2009-2010 Nanjing RedOrange ltd (http://www.red-orange.cn)
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package redora.client.mvp;

import redora.client.Fields;
import redora.client.Persistable;
import redora.client.Service;
import redora.client.util.ClientUtil;
import redora.client.validation.DefaultMessageAllocator;

/**
 * Locates the generated services for you. For each object in your
 * object model, Redora generated a {@link Service}, {@link ClientUtil},
 * and the {@link Fields} for you. Based on the Pojo.class
 * the Locator will retrieve the appropriate (generated) implementation.
 *
 * @author Nanjing RedOrange (www.red-orange.cn)
 */
public interface Locator {
    Service locateService(Class<? extends Persistable> cls);

    ClientUtil locateUtil(Class<? extends Persistable> cls);

    EditView locateEditView(Class<? extends Persistable> cls);

    Fields locateFields(Class<? extends Persistable> cls);

    Class<? extends Persistable> locateClass(String className);

    DefaultMessageAllocator locateMessage();
}
